package generic

import "fmt"

// Print any代表任意类型，相当于旧版本的 interface{}
func Print[T any](value T) {
	fmt.Println(value)
}

// Addable 定义一个接口约束
type Addable interface {
	~int | ~float64 | ~string // 允许int、float64或string类型
}

func Add[T Addable](a, b T) T {
	return a + b
}

// Add2 组合约束
func Add2[T ~int | ~float64 | ~string](a, b T) T {
	return a + b
}

func Find[T comparable](slice []T, target T) int {
	for i, v := range slice {
		if v == target {
			return i
		}
	}
	return -1
}
